package com.winsdom.enums;

/**
 * 系统权限码枚举
 * 用于统一管理和分配系统各模块的访问权限
 */
public enum AuthenticationType {
    // ================ 计费管理模块（父ID: 108） ================
    /** 费项分类 */
    FEE_ITEM_CLASSIFICATION("FEE_ITEM_CLASSIFICATION"),

    /** 费项管理 */
    FEE_ITEM_MANAGEMENT("FEE_ITEM_MANAGEMENT"),

    /** 公式管理 */
    FORMULA_MANAGEMENT("FORMULA_MANAGEMENT"),

    /** 计费生成 */
    BILLING_GENERATION("BILLING_GENERATION"),

    /** 参数配置 */
    PARAMETER_CONFIGURATION_BILLING("PARAMETER_CONFIGURATION_BILLING"), // 计费管理下的参数配置

    // ================ 收费管理模块（父ID: 109） ================
    /** 统一收费 */
    UNIFIED_CHARGE("UNIFIED_CHARGE"),

    /** 账单管理 */
    BILL_MANAGEMENT("BILL_MANAGEMENT"),

    /** 催收管理 */
    COLLECTION_MANAGEMENT("COLLECTION_MANAGEMENT"),

    /** 收款核销 */
    PAYMENT_WRITEOFF("PAYMENT_WRITEOFF"),

    /** 收款记录 */
    PAYMENT_RECORD("PAYMENT_RECORD"), // 修正：去除连字符，统一为下划线

    /** 参数配置 */
    PARAMETER_CONFIGURATION_CHARGE("PARAMETER_CONFIGURATION_CHARGE"), // 修正：去除连字符，统一为下划线

    // ================ 票据管理模块（父ID: 110） ================
    /** 发票记录 */
    INVOICE_RECORD("INVOICE_RECORD"), // 修正：去除连字符，统一为下划线

    /** 收据记录 */
    RECEIPT_RECORD("RECEIPT_RECORD"), // 修正：去除连字符，统一为下划线

    /** 收据模板 */
    RECEIPT_TEMPLATE("RECEIPT_TEMPLATE"), // 修正：去除连字符，统一为下划线

    /** 参数配置 */
    PARAMETER_CONFIGURATION_NOTES("PARAMETER_CONFIGURATION_NOTES"), // 修正：统一为下划线

    // ================ 财务管理模块（父ID: 111） ================
    /** 退款管理 */
    REFUND_MANAGEMENT("REFUND_MANAGEMENT"), // 修正：去除连字符，统一为下划线

    // ================ 主数据平台模块（父ID: 112） ================
    /** 组织管理 */
    ORGANIZATION_MANAGEMENT("ORGANIZATION_MANAGEMENT"), // 修正：去除连字符，统一为下划线

    /** 项目管理 */
    PROJECT_MANAGEMENT("PROJECT_MANAGEMENT"), // 修正：去除连字符，统一为下划线

    /** 资源管理 */
    RESOURCE_MANAGEMENT("RESOURCE_MANAGEMENT"), // 修正：去除连字符，统一为下划线

    /** 客户管理 */
    CUSTOMER_MANAGEMENT("CUSTOMER_MANAGEMENT"), // 修正：去除连字符，统一为下划线

    /** 合同管理 */
    CONTRACT_MANAGEMENT("CONTRACT_MANAGEMENT"), // 修正：去除连字符，统一为下划线

    /** 抬头审核 */
    HEADING_REVIEW("HEADING_REVIEW"), // 修正：去除连字符，统一为下划线

    // ================ 统计报表模块（父ID: 113） ================
    /** 管理看板 */
    MANAGEMENT_DASHBOARD("MANAGEMENT_DASHBOARD"), // 修正：去除连字符，统一为下划线

    /** 楼盘欠款统计表 */
    PROPERTY_ARREARS_STATISTICS("PROPERTY_ARREARS_STATISTICS"), // 修正：去除连字符，统一为下划线

    /** 楼盘应收统计表 */
    PROPERTY_RECEIVABLE_STATISTICS("PROPERTY_RECEIVABLE_STATISTICS"), // 修正：去除连字符，统一为下划线

    /** 客户应收统计表 */
    CUSTOMER_RECEIVABLE_STATISTICS("CUSTOMER_RECEIVABLE_STATISTICS"), // 修正：去除连字符，统一为下划线

    /** 楼盘欠费账龄分析 */
    PROPERTY_ARREARS_AGING_ANALYSIS("PROPERTY_ARREARS_AGING_ANALYSIS"), // 修正：去除连字符，统一为下划线

    /** 客户欠费账龄分析 */
    CUSTOMER_ARREARS_AGING_ANALYSIS("CUSTOMER_ARREARS_AGING_ANALYSIS"), // 修正：去除连字符，统一为下划线

    /** 客户欠费明细 */
    CUSTOMER_ARREARS_DETAILS("CUSTOMER_ARREARS_DETAILS"), // 修正：去除连字符，统一为下划线

    // ================ 系统管理模块（父ID: 114） ================
    /** 编码规则 */
    ENCODING_RULES("ENCODING_RULES"), // 修正：去除连字符，统一为下划线

    /** 账号管理 */
    ACCOUNT_MANAGEMENT("ACCOUNT_MANAGEMENT"), // 修正：去除连字符，统一为下划线

    /** 角色管理 */
    ROLE_MANAGEMENT("ROLE_MANAGEMENT"), // 保持一致

    /** 日志查询 */
    LOG_QUERY("LOG_QUERY"), // 修正：去除连字符，统一为下划线

    /** 通知模板 */
    NOTIFICATION_TEMPLATE("NOTIFICATION_TEMPLATE"), // 修正：去除连字符，统一为下划线

    // ================ 业主端 (H5) 模块（父ID: 116） ================
    /** 登录 */
    LOGIN_OWNER("LOGIN_OWNER"), // 修正：去除空格，统一为下划线（原 "LOGIN" 改为与枚举名一致）

    /** 首页 */
    HOME_PAGE_OWNER("HOME_PAGE_OWNER"); // 修正：去除空格和连字符，统一为下划线

    private final String code;

    AuthenticationType(String code) {
        this.code = code;
    }

    /**
     * 获取权限码
     */
    public String getCode() {
        return code;
    }

    /**
     * 根据权限码查找枚举（建议添加此方法）
     */
    public static AuthenticationType fromCode(String code) {
        for (AuthenticationType type : AuthenticationType.values()) {
            if (type.getCode().equals(code)) {
                return type;
            }
        }
        return null;
    }
}